package controllers;

import play.*;
import play.data.validation.MaxSize;
import play.data.validation.MinSize;
import play.data.validation.Required;
import play.mvc.*;

import java.util.*;

import models.*;

@With(Secure.class)
public class Sujets extends Application
{
	// Liste les messages d'un sujet donné
	public static void show(long sujet_id)
	{
		Sujet sujet = Sujet.findById(sujet_id);
		Categorie_forum categ = Categorie_forum.findById(sujet.categorie.id);
		List<Message> msgs = sujet.getMessages();
		Utilisateur user = Utilisateur.find("byPseudo", Security.connected()).<Utilisateur>first();
		render(msgs, sujet, categ, user);		
	}
	
	// Ajouter un sujet à une catégorie
	public static void ajouter(long categ_id)
	{
		Categorie_forum categ = Categorie_forum.findById(categ_id);
		render(categ);
	}
	
	// Valide l'ajout d'un sujet
	public static void ajouterAction(long categ_id,
									@Required 
									@MaxSize(50)
									@MinSize(5)
									String titre_sujet,
									@Required
									@MinSize(30)
									String contenu_message)
	{
		Utilisateur user = Utilisateur.find("byPseudo", Security.connected()).<Utilisateur>first();
		Categorie_forum categ = Categorie_forum.findById(categ_id);
		String message = "";
		
		
		if(validation.hasErrors())
		{
			render("Sujets/ajouter.html", categ, titre_sujet, contenu_message);
		}		
		
		else
		{
			if(Sujet.find("byTitre", titre_sujet).first() != null)
			{
				message = "Ce nom de sujet n'est pas disponnible";
				render("Sujets/ajouter.html", categ, titre_sujet, contenu_message, message);
			}
			else
			{
				Sujet suj = new Sujet(null, titre_sujet, categ).save();
				Message msg = new Message(suj, user, "", contenu_message, new Date()).save();
				
				suj.source = msg;
				suj.save();

				Categorie_forums.show(categ_id);
			}
		}
	}	
}
